package generic;

import java.util.LinkedList;

/**
 * @author SWJ
 * @create 2021-06-21 15:12
 * 测试链表结构
 */
public class
TestLinkedList {
    public static void main(String[] args) {
        LinkedList<String> list = new LinkedList();
        //2.添加数据
        list.add("孙悟空");
        list.add("猪八戒");
        list.add("唐三藏");
        list.add("沙师弟");
        list.add("白龙马");
        System.out.println(list);

        //3.1自行测试从collection继承过来的共性方法测试

        //3.2 LinkedList特有方法测试
        list.addFirst("蜘蛛精");
        //添加首元素
        list.addLast("玉兔精");
        //添加尾元素
        System.out.println(list);

        System.out.println(list.getFirst());
        //获取首元素
        System.out.println(list.getLast());
        //获取尾元素

        System.out.println(list.removeFirst());
        //删除首元素
        System.out.println(list.removeLast());
        //删除尾元素
        System.out.println(list);

        //创建其他对象
        LinkedList<String> list2 = new LinkedList<>();
        //添加数据
        list2.add("syj");
        list2.add("hlm");
        list2.add("sgyy");
        list2.add("shz");
        System.out.println(list2);

        /**别名：查询系类*/
        System.out.println(list2.peek());
        //获取但不移除首元素syj
        System.out.println(list2.peekFirst());
        //获取但不移除首元素syj
        System.out.println(list2.peekLast());
        //获取但不移除尾元素

        /**新增系类*/
        System.out.println(list2.offer("book1"));
        //添加到集合末尾
        System.out.println(list2.offerFirst("book2"));
        //添加到元素集合开头
        System.out.println(list2.offerFirst("book3"));
        //指定元素添加到集合
        System.out.println(list2);
        /**true
         true
         true
         [book3, book2, syj, hlm, sgyy, shz, book1]*/

        System.out.println(list2.poll());
        System.out.println(list2);
        /**poll获取首元素并且移除集合的首元素
         * book3
         [book2, syj, hlm, sgyy, shz, book1]*/
        System.out.println(list2.pollFirst());
        //获取并且移除集合中的首元素
        System.out.println(list2.pollLast());
        System.out.println(list2);
        System.out.println(list2.element());
        //获取并且不移除首元素
        System.out.println(list2);
    }
}
